package com.backend.demo.dao;

import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;

import com.backend.demo.baseDAO.BaseDao;
import com.backend.demo.entities.EnumItem;
import com.backend.demo.util.DateTimeUtil;

/**
 * 枚举项DAO
 * @author Administrator
 *
 */
@SuppressWarnings("unchecked")
@Repository
public class EnumItemDao extends BaseDao<EnumItem, Long> {
	
	/**
	 * 查询所有枚举项
	 * @return
	 */
	public List<EnumItem> getAllEnumItems(){
		String hql = "from EnumItem";
		return getListByHQL(hql);
	}
	
	/**
	 * 综合查询
	 * @param enumItem
	 * @return
	 */
	public List<EnumItem> getEnumItemsByCondition(EnumItem enumItem){
		StringBuffer stringBuffer = new StringBuffer("from EnumItem where 1=1 ");
		if(StringUtils.isNotEmpty(enumItem.getCode())){
			stringBuffer.append("and code like '%" + enumItem.getCode() +"%'");
		}
		if(StringUtils.isNotEmpty(enumItem.getEnumword())){
			stringBuffer.append("and enumword like '%" + enumItem.getEnumword() +"%'");
		}
		if(StringUtils.isNotEmpty(enumItem.getName())){
			stringBuffer.append("and name like '%" + enumItem.getName() +"%'");
		}
		if(StringUtils.isNotEmpty(enumItem.getNameen())){
			stringBuffer.append("and nameen like '%" + enumItem.getNameen() +"%'");
		}
		if(StringUtils.isNotEmpty(enumItem.getRemark())){
			stringBuffer.append("and remark like '%" + enumItem.getRemark() +"%'");
		}
		if(enumItem.getEnumsortid() != 0){
			stringBuffer.append("and enumsortid = '" + enumItem.getEnumsortid() + "'");
		}
		if(enumItem.getStatus() != -1){
			stringBuffer.append("and status = '" + enumItem.getStatus() + "'");
		}
		if(enumItem.getCreatetime() != null){
			String createtime = DateTimeUtil.formatDateTime(enumItem.getCreatetime());
			stringBuffer.append("and createtime >= '" + createtime + "'");
		}
		return getListByHQL(stringBuffer.toString());
	}
	
	/**
	 * 查询唯一枚举项
	 * @param enumItemID
	 * @return
	 */
	public EnumItem getEnumItemByEnumItemID(long enumItemID){
		String hql = "from EnumItem where enumid = ?";
		return getOneByHQL(hql, enumItemID);
	}
	
	/**
	 * 根据enumword查询所有的枚举项
	 * @param enumWord
	 * @return
	 */
	public List<EnumItem> getAllEnumItemsByEnumWord(String enumWord){
		String hql = "from EnumItem where enumword = ?";
		return getListByHQL(hql, enumWord);
	}
	
	/**
	 * 根据enumword 和 code查询字段值
	 * @param enumword
	 * @param code
	 * @return
	 */
	public EnumItem getNameByEnumwordAndCode(String enumword,String code){
		String hql = "from EnumItem where enumword = ? and code = ?";
		EnumItem enumItem = getOneByHQL(hql, enumword,code);
		return enumItem;
	}
	
	/**
	 * 新增枚举项
	 * @param enumItem
	 * @return
	 */
	public int addEnumItem(EnumItem enumItem){
		enumItem.setCreatetime(new Date());
		enumItem.setUpdatetime(new Date());
		return save(enumItem);
	}
	
	/**
	 * 修改枚举项信息
	 * @param enumItem
	 * @return
	 */
	public int editEnumItem(EnumItem enumItem){
		String hql = "update EnumItem set enumsortid = ?,code = ?,name = ?,enumword = ?,updatetime = ? where enumid = ?";
		return updateOrDeleteByHql(hql, enumItem.getEnumsortid(),enumItem.getCode(),enumItem.getName(),enumItem.getEnumword(),new Date(),enumItem.getEnumid());
	}
	
	/**
	 * 删除枚举项
	 * @param enumItemID
	 * @return
	 */
	public int deleteEnumItemByEnumID(long enumItemID){
		return deleteById(enumItemID);
	}

}
